import { triggerFrame } from "hui-core"

export const PUBLIC = {
	// 将 Date 转化为指定格式的String
	// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符，
	// 年(y)可以用 1-4 个占位符，毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
	// 例子：
	// dateFormat(new Date(), "yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
	// dateFormat(new Date(), "yyyy-M-d h:m:s.S")      ==> 2006-7-2 8:9:4.18
	//author: meizz
	dateFormat(date, fmt) {
		if(!date) return ''
		var d = typeof date === 'number' || typeof date === 'string' ? new Date(date) : date
		if (!fmt) {
			fmt = "yyyy-MM-dd HH:mm:ss"
		}
		var o = {
			"M+": d.getMonth() + 1, //月份
			"d+": d.getDate(), //日
			"h+": d.getHours() % 12 == 0 ? 12 : d.getHours() % 12, //小时
			"H+": d.getHours(), //小时
			"m+": d.getMinutes(), //分
			"s+": d.getSeconds(), //秒
			"q+": Math.floor((d.getMonth() + 3) / 3), //季度
			S: d.getMilliseconds(), //毫秒
		}
		if (/(y+)/.test(fmt))
			fmt = fmt.replace(
				RegExp.$1,
				(d.getFullYear() + "").substr(4 - RegExp.$1.length)
			)
		for (var k in o)
			if (new RegExp("(" + k + ")").test(fmt))
				fmt = fmt.replace(
					RegExp.$1,
					RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
				)
		return fmt
	},
	formatTime: (timestr) => {
		if (!timestr) return ''
		let year = timestr.substring(0, 4)
		let date = timestr.substring(4, 6) + '-' + timestr.substring(6, 8)
		let time = timestr.substring(8, 10) + ':' + timestr.substring(10, 12)
		let currentD = new Date()
		let currentDay = currentD.getFullYear() + ' ' + (currentD.getMonth() + 1) + '-' + currentD.getDate()
	
		if (new Date(currentDay).getTime() === new Date(year + ' ' + date).getTime()) {
			return time
		} else {
			return date + ' ' + time
		}
	},
	getNowTimeStr() {
		let now = new Date()
		let year = now.getFullYear()
		let month = now.getMonth() + 1
		if (month.toString().length < 2) {
			month = '0' + month
		}
		let date = now.getDate()
		if (date.toString().length < 2) {
			date = '0' + date
		}
		let hours = now.getHours()
		let minutes = now.getMinutes()
		let seconds = now.getSeconds()
		let milliseconds = now.getMilliseconds()
		return '' + year+month+date+hours+minutes+seconds+milliseconds
	},
	/**
 * 提示信息
 */
	message(huiObj,type, msg) {
		huiObj.$hMessage.config({
			top: 50
		})
		if (type === 'error') {
			huiObj.$hMessage[type]({
				content: msg,
				duration: 4,
				closable: true
			});
		} else {
			huiObj.$hMessage[type]({
				content: msg,
				duration: 3,
				closable: true
			});
		}
	},
	// 防抖
	debounce(fn, delay = 100) {
		let timer;
		return function () {
			clearTimeout(timer);
			timer = setTimeout(() => {
				try {
					fn.apply(this, arguments);
				} catch (e) {
					console.error("debouce error:", e);
				}
			}, delay);
		};
	},
	// 获取url中的某个参数
	getParamFromURL(url, paramName) {
		const urlParams = url.split('?')[1]; // 获取URL中'?'后面的部分
		if (!urlParams) return null; // 如果没有查询参数，则返回null
	
		const paramsArray = urlParams.split('&'); // 将参数字符串按'&'分割成数组
		for (let i = 0; i < paramsArray.length; i++) {
			const param = paramsArray[i].split('='); // 再将每个键值对按'='分割
			if (decodeURIComponent(param[0]) === paramName) { // 检查是否为所需参数名
				return decodeURIComponent(param[1]); // 返回对应的参数值（已解码）
			}
		}
		return null; // 如果未找到参数，则返回null
	}
}

/**
	 * 路由跳转函数 参考文档：http://hui.hundsun.com/frame-app/config/tab.html
	 *  @param {Object}  obj 参数对象
	 * @param {String} url 跳转路径
	 * @param {Object} query 携带的参数
	 * @param {String} uuid 必填项， 页签唯一 Id
	 * @param {String} title 页签显示的 title
	 * @param {Object} tab_ext_field 携带的参数
	 * @param {String} parentId 若此页签uuid无法对应到任何一个菜单，则可根据此参数激活指定的菜单
	 * @param {String} activeTabId 打开这个页签的时候，可以传入一个 activeTabId,  那么在这个页签被关闭后，就会指定激活到 这个 activeTabId 上面
	 * @param {String} systemUnid 必填项，标记所属的子系统
	 */
export function navigateFun(obj) {
	// 开发模式下使用路由跳转可通过IS_SEE开启普通路由跳转模式，生产环境使用HUI的triggerFrame触发页签操作
	if (!window.LOCAL_CONFIG.IS_SEE && process.env.NODE_ENV === "development") {
		console.log(obj.query)
		this.$router.push({ path: obj.url, query: obj.query ?  obj.query : {}})
	} else {
		// let tabInfo = {
		//   uuid: obj.uuid, // 必填项， 页签唯一 Id
		//   url: obj.url, // 页签跳转链接
		//   title: obj.title, // 页签显示的 title
		//   systemUuid: obj.systemUuid ? obj.systemUnid : window.LOCAL_CONFIG.systemUuid, // 必填项，标记所属的子系统 （传入时激活对应的子系统菜单，对应操作员中心菜单接口中的子系统id , kind_code）
		//   query: obj.query,
		//   tab_ext_field: {
		//     parentId: parentId,
		//     activeTabId: activeTabId || parentId
		//   },
		// }
		let tabInfo = Object.assign({}, obj)
		if (!obj.systemUuid) {
			tabInfo.systemUuid = window.LOCAL_CONFIG.systemUuid
		}
		triggerFrame("active-custom-tab", tabInfo)
	}
}
/***
 * 返回函数
 * @param {string} uuid 指定激活页签的uuid
 */
export function navigateBack(uuid) {
	if (!window.LOCAL_CONFIG.IS_SEE && process.env.NODE_ENV === "development") {
		this.$router.go(-1)
		return
	}
	if (uuid) {
		triggerFrame("del-custom-tab", null, { uuid: uuid })
	} else {
		triggerFrame("del-custom-tab", null)
	}
}